import dotenv from 'dotenv'
//// 读取.env文件并将其挂在到process.env中，这样我们就可以通过process.env读取值了
dotenv.config()

//导入Koa
import Koa from 'koa'
//导入路由模块
import router from './router'

import koaBody from 'koa-body'

import { Server } from 'http'

//导入全局异常处理
import catchError from './exception/exception'

//导入sequelize
import db from './db'
db()
const app = new Koa()

//使用全局异常，在其他use之前
app.use(catchError)

//使用koa-body
app.use(
  koaBody({
    multipart: true,
    formidable: {
      //   //在配置选项option，不推荐使用相对路径
      //   //在option里的相对路径不是，不是相对的当前文件，相对process.cwd()
      //   //如果想要使用相对路径，则要写成'./src/upload'，推荐使用绝对路径
      //   uploadDir: path.join(__dirname, '../upload'),
      //   //保持后缀名
      keepExtensions: true
    }
  })
)

//加载所有中间件的路由规则
app.use(router.routes())

//如果
app.on('error', (err, ctx) => {
  console.log(err, '11111')
})

//开启服务
const run = (port: any): Server => {
  return app.listen(port, () => {
    console.log(`serve is running on http://127.0.0.1:${port}`)
  })
}

export default run
